
#ifndef IBP_COMPARE_PROCS_H
#define IBP_COMPARE_PROCS_H

#include "../include/const.h"

/* 
 * Funkce precte pid ze souboru (retezec) a prevede jej na ciselnou hodnotu.
 */
int readPidFromFile(char *filename);

/* 
 * Funkce zjisti, zda ma proces se zadanym pid zaznam v /proc
 */
int isInProc(int wantedPid);

/* 
 * Funkce zjisti, zda se proces s uvedenym pid vypise prikazem ps -e
 */
int isInPs(int wantedPid);

/* 
 * Funkce ziska seznam vsech procesu zaslanim signalu na vsechna mozna pid.
 * Procesy, ktere na signal zareaguji se zaznamenaji
 * @param procs seznam do nehoz budou ulozena pid odhalenych procesu
 * @param len delka predchoziho seznamu
 */
int getProcsKill(int procs[], int len);

/*
 * Funkce ziska seznam vsech bezicich procesu (vcetne skrytych) z modulu.
 * @param getType typ jakym se budou procesy ziskavat
 * @return pocet ziskanych procesu, nebo hodnotu < 0 pri chybe
 */
int getProcsModule(int getType);

/*
 * Funkce ziska seznam vsech procesu z modulu metodou pruchodu task list
 * @return pocet ziskanych procesu, nebo hodnotu < 0 pri chybe
 */

int getProcsTaskList(); 

/*
 * Funkce ziska seznam vsech procesu z modulu metodou pruchodu pid hash
 * @return pocet ziskanych procesu, nebo hodnotu < 0 pri chybe
 */
int getProcsPidHash();

/*
 * Funkce ziska dalsi pid. Uziva se v pripade, ze se seznam vsech pid
 * ziskava z modulu.
 * @return pid nebo hodnota < 0 pri chybe
 */
int nextPidInTasks();

/*
 * Funkce ziskava seznam vsech podezrelych procesu
 * @param suspicious pole do nehoz budou podezrele procesy ulozeny
 * @len delka predchoziho pole
 * @param compType jak se budou porovnavat referencni pid s pid viditelnych pro uzivatele (vypis z ps, podadresare /proc, atd)
 * @getProcsType typ jak se bude ziskavat seznam vsech procesu (vcetne skrytych, referencni hodnoty)
 * @return pocet podezrelych procesu nebo hodnotu < 0 pri chybe
 */

int getAllSuspicious(int suspicious[], int len, tCompareType compType, tGetProcsType getProcsType);

/*
 * Funkce vypise na stdout informace o procesech.
 * @param suspicious pole procesu k vypsani
 * @param len delka predchoziho pole
 */

void printInfo(int suspicious[], int len);


#endif
